Release date : 18th December 2012
This release is a stepping-stone from 6, which has no namespace, to the new namespace policy.
if( !(iteration % stss->iteration_modulo) ) { lfds600_slist_get_next( se, &se ); count++; }
It should look like this;
if( se != NULL and !(iteration % stss->iteration_modulo) ) { lfds600_slist_get_next( se, &se ); count++; }
This result of this is the existence of a race condition. Some slist tests all basically work by generating list elements on the fly and while having a traverser thread running. If however the traverser thread begins to run before any elements have been generated, the missing check for NULL will permit slist_get_next() to execute on a NULL element which causes an assert.
The following tests are affected;
4. one head writer and one list traverser per CPU
5. make one element, then one after writer and one list traverser per CPU
12. one head writer, one after writer, one traverser and one 25%% deleter-traverser per CPU
The problem code is in /test/src/lfds600_test_freelist.c, line 32.
The code looks like this;
unsigned int loop, cpu_count, count;
It should look like this;
unsigned int loop, cpu_count; lfds600_atom_t count;